package com.waiting.string;

/**
 * @Description
 * @Author bjweitingting
 * @Date 2018/11/20
 **/
public class StringPoolTest {
    public static void main(String[] args) {
//        String str1 = "abc";
//        //str2的语句等同于 String tmp="def";String str2=new String(tmp);
//        //所以一条语句会产生两个string对象，tmp存放在堆中，但其引用会存放在全局字符串常量池中
//        String str2 = new String("def");
//        String str3 = "abc";
//        //如果stringpool中没有对应的字符串，则把该字符串添加到string pool中，返回对该字符串的引用
//        //如果string pool中已经有该字符串，就直接返回。
//        String str4 = str2.toString();
////        String str5 = "def";
//        String str5 = str2.intern();
//        System.out.println(str2==str5);

//        System.out.println(str1 == str3);//true
//        System.out.println("RESULT" + str2 == str4);//false
//        System.out.println(str4 == str5);//trues
//        System.out.println("s2==s5:"+(str2==str5));
//        System.out.println(str4.intern() == str5.intern());//true
//        System.out.println(str4);

        String str1=new StringBuilder().append("test").toString();
        System.out.println(str1==str1.intern()); //false

        String str2="test-str2";
        System.out.println(str2==str2.intern()); //true,说明，字符串常量 test-str2 直接进入了字符串常量池

    }

}
